Industrial controllers are special-purpose computers utilized for controlling industrial processes, manufacturing equipment, and other factory automation, such as data collection or networked systems. In accordance with a control program, the industrial controller, having an associated processor (or processors), measures one or more process variables or inputs reflecting the status of a controlled system, and changes outputs effecting control of such system. The inputs and outputs may be binary, (e.g., on or off), as well as analog inputs and outputs assuming a continuous range of values.
Measured inputs received from such systems and the outputs transmitted by the systems generally pass through one or more input/output (I/O) modules. These I/O modules serve as an electrical interface to the controller and may be located proximate or remote from the controller including remote network interfaces to associated systems. Inputs and outputs may be recorded in an I/O table in processor memory, wherein input values may be asynchronously read from one or more input modules and output values written to the I/O table for subsequent communication to the control system by specialized communications circuitry (e.g., back plane interface, communications module). Output modules may interface directly with one or more control elements, by receiving an output from the I/O table to control a device such as a motor, valve, solenoid, amplifier, and the like.
At the core of the industrial control system is an industrial controller such as a Programmable Logic Controller (PLC), a Programmable Automation Controller (PAC), or PC-based controller. Such controllers are programmed by systems designers to operate manufacturing processes via user-designed logic programs, sequential function charts, function block diagrams, structured text, or other user programs. The user programs are stored in memory and generally executed by the controller in a sequential manner, although instruction jumping, looping and interrupt routines, for example, are also common. Associated with the user program are a plurality of memory elements or variables that provide dynamics to controller operations and programs. These variables can be user-defined and can be defined as bits, bytes, words, integers, floating point numbers, timers, counters and/or other data types to name but a few examples.
Various remote applications or systems often attempt to update and/or acquire industrial controller information or related device information via a plurality of different competing and often incompatible or insecure network technologies. A major concern with this type of access to industrial controllers, and control systems in general, relates to the amount of security that is provided when sending or receiving data to and from the industrial controller and/or associated equipment. In most factories or industrial environments, complex and sometimes dangerous operations are performed in a given manufacturing setting. Thus, if a network-connected controller is inadvertently accessed, or, even worse, intentional sabotage occurs by a rogue machine or individual, potentially harmful results can occur.
One attempt at providing security in industrial control systems relates to simple password protection to limit access to the systems. This can take the form of a plant or controls Engineer or Administrator entering an alpha-numeric string that is typed by an operator each time access is attempted, wherein the controller grants access based on a successful typing of the password. These type passwords are highly prone to attack or discovery, however. Often, users employ passwords that are relatively easy to determine (e.g., person's name or birthday). Sometimes, users exchange passwords with other users, the password is overheard, or a user with improper authorization comes in contact with the password. Even if a somewhat higher level of security is provided, parties employing sophisticated hacking techniques can often penetrate sensitive control systems. Such techniques can allow non-authorized parties to change the control systems' control algorithms in dangerous ways, to assume control of production equipment, or to alter I/O streams between the control system and the controlled equipment. Accordingly, access should be limited to authorized users and/or systems in order to mitigate potentially harmful consequences.